package 第4次作业;
import 第4次作业.Afraid;
import 第4次作业.Animal;
import 第4次作业.Cat;
import 第4次作业.Dog;

public class Main {
    public static void main(String[] args) {
        // 父类引用指向子类实例（多态）
        Animal dog = new Dog();   // Animal类型引用Dog对象
        Animal cat = new Cat();   // Animal类型引用Cat对象

        // 接口引用指向实现类实例（多态）
        Afraid afraidDog = new Dog();  // Afraid接口引用Dog对象
        Afraid afraidCat = new Cat();  // Afraid接口引用Cat对象

        // 创建Person对象，模拟人与动物的交互
        Person person = new Person();

        // 测试喂养行为
        System.out.println("=== 测试喂养动物 ===");
        person.feed(dog);   // 喂养狗
        person.feed(cat);   // 喂养猫

        // 测试捕捉行为
        System.out.println("=== 测试捕捉动物 ===");
        person.catchAnimal(afraidDog);  // 捕捉狗
        person.catchAnimal(afraidCat);  // 捕捉猫

        // 直接通过父类/接口引用调用方法（多态体现）
        System.out.println("=== 直接调用子类方法 ===");
        dog.eat();          // 实际调用Dog的eat()
        cat.eat();          // 实际调用Cat的eat()
        afraidDog.escape(); // 实际调用Dog的escape()
        afraidCat.makeSounds(); // 实际调用Cat的makeSounds()
    }
}